package com.cedar.model.Singleton;

/**
 * 内部内实现单例模式
 * JVM内部的机制能够保证当一个类被加载的时候，这个类的加载过程是线程互斥的
 * */
public class SingletonIn {
    /* 私有构造方法，防止被实例化 */
    private SingletonIn(){
        
    }
    
    /* 此处使用一个内部类来维护单例 */
    private static class SingletonFactory{
        private static SingletonIn instance = new SingletonIn();
    }
    
    /* 获取实例 */
    private static SingletonIn getInstance() {
        return SingletonFactory.instance;
    }
    
    /*如果该对象被用于序列化，可以保证对象在序列化前后保持一致*/
    public Object readResolve() {
        return getInstance();
    }
}
